import%20marimo%0A%0A__generated_with%20%3D%20%220.17.6%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22%2C%20auto_download%3D%5B%22html%22%2C%20%22ipynb%22%5D)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20import%20pytz%0A%20%20%20%20import%20datetime%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20india_timezone%20%3D%20pytz.timezone(%22Asia%2FKolkata%22)%0A%20%20%20%20now%20%3D%20datetime.datetime.now(india_timezone)%0A%0A%20%20%20%20curr%20%3D%20now.strftime(%22%25Y-%25m-%25d%2C%20%25I%3A%25M%3A%25S%20%25p%20%25Z%22)%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20rf%22%22%22%0A%20%20%20%20%23%20Week%20-%202%0A%0A%20%20%20%20**Submission%20Date%3A**%20%602025-10-05%2C%2023%3A59%20IST%60%0A%0A%20%20%20%20**Last%20Updated%3A**%20%60%7Bcurr%7D%60%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Import%20required%20packages%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20from%20sklearn.model_selection%20import%20train_test_split%0A%20%20%20%20from%20sklearn.preprocessing%20import%20OrdinalEncoder%2C%20OneHotEncoder%2C%20StandardScaler%0A%20%20%20%20return%20OneHotEncoder%2C%20OrdinalEncoder%2C%20StandardScaler%2C%20pd%2C%20train_test_split%0A%0A%0A%40app.cell%0Adef%20_(pd)%3A%0A%20%20%20%20df%20%3D%20pd.read_csv(%22Week-2%2FGraded%20Assignment%2Fdataset.csv%22)%0A%20%20%20%20return%20(df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Basic%20Dataset%20Inspection%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.shape%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.head()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.info()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.describe()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.isnull().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%201%0A%0A%20%20%20%20Which%20of%20the%20following%20columns%20have%20object%20datatype%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.dtypes%5Bdf.dtypes%20%3D%3D%20%22object%22%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%202%0A%0A%20%20%20%20In%20this%20dataset%2C%20how%20many%20**%22Males%22**%20from%20**%22Europe%22**%20have%20made%20**%22InGamePurchases%22**%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df%5B%0A%20%20%20%20%20%20%20%20(df%5B%22Gender%22%5D%20%3D%3D%20%22Male%22)%0A%20%20%20%20%20%20%20%20%26%20(df%5B%22Location%22%5D%20%3D%3D%20%22Europe%22)%0A%20%20%20%20%20%20%20%20%26%20(df%5B%22InGamePurchases%22%5D%20%3D%3D%201)%0A%20%20%20%20%5D.shape%5B0%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%203%0A%0A%20%20%20%20In%20your%20dataset%2C%20how%20many%20players%20under%20the%20**%22Age%22**%2018%20have%20strictly%20greater%20than%2010%20**%22PlayTimeHours%22**%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df%5B(df%5B%22Age%22%5D%20%3C%2018)%20%26%20(df%5B%22PlayTimeHours%22%5D%20%3E%2010)%5D.shape%5B0%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%204%0A%0A%20%20%20%20Create%20feature%20matrix(X)%20and%20label%20vector(y)%20using%20following%20instructions%3A%0A%0A%20%20%20%20**%22EngagementLevel%22**%20is%20the%20target%20column(y).%0A%0A%20%20%20%20All%20the%20columns%20except%20the%20target%20column%20are%20in%20feature%20matrix(X).%0A%0A%20%20%20%20How%20many%20total%20null%20values%20were%20present%20in%20the%20whole%20dataset%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20X%20%3D%20df.drop(columns%3D%5B%22EngagementLevel%22%5D)%0A%20%20%20%20y%20%3D%20df%5B%22EngagementLevel%22%5D%0A%20%20%20%20return%20X%2C%20y%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.isnull().sum().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%205%0A%0A%20%20%20%20Split%20the%20dataset%20into%20train%20dataset%20and%20test%20dataset%20in%20the%20following%20manner.%0A%0A%20%20%20%20Use%20sklearn%20train_test_split%20function%20to%20split%20the%20data.%0A%0A%20%20%20%20Use%20only%2020%25%20data%20as%20test_set%20and%20keep%20random_state%20%3D%2042%0A%0A%20%20%20%20Which%20category%20has%20the%20least%20value%20counts%20in%20y_train%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X%2C%20train_test_split%2C%20y)%3A%0A%20%20%20%20X_train%2C%20X_test%2C%20y_train%2C%20y_test%20%3D%20train_test_split(%0A%20%20%20%20%20%20%20%20X%2C%20y%2C%20test_size%3D0.2%2C%20random_state%3D42%0A%20%20%20%20)%0A%20%20%20%20return%20X_test%2C%20X_train%2C%20y_train%0A%0A%0A%40app.cell%0Adef%20_(y_train)%3A%0A%20%20%20%20y_train.value_counts().idxmin()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Common%20Instructions%20for%20Question%206%20and%207%0A%0A%20%20%20%20Rules%20for%20Imputing%20the%20missing(NaN)%20or%20Unknown%20values%3A%0A%0A%20%20%20%20-%20Calculating%20statistical%20values%20(such%20as%20mean%2C%20median%2C%20mode)%20for%20each%20column%20in%20the%20training%20dataset.%0A%20%20%20%20-%20Applying%20these%20calculated%20statistical%20values%20to%20replace%20missing%20(NaN)%20and%20unknown%20values%20in%20both%20the%20training%20and%20test%20datasets.%0A%20%20%20%20-%20Ensure%20that%20the%20calculation%20of%20statistical%20values%20excludes%20any%20rows%20containing%20missing%20or%20unknown%20values.%0A%20%20%20%20-%20Replace%20Unknown%20values%20in%20the%20**%22Age%22**%20feature%20with%20the%20Mean%20value%20in%20that.%0A%20%20%20%20-%20Replace%20Unknown%20values%20in%20the%20**%22Location%22**%20feature%20with%20the%20constant%20value%20**%22Other%22**.%0A%20%20%20%20-%20Replace%20Unknown%20values%20in%20the%20**%22GameDifficulty%22**%20feature%20with%20the%20Most%20Frequent%20value%20in%20that.%0A%20%20%20%20-%20Replace%20Unknown%20values%20in%20the%20**%22InGamePurchases%22**%20feature%20with%20the%20constant%20value%20'0'.%0A%20%20%20%20-%20Write%20the%20answers%20related%20to%20the%20above%20imputation%20in%20below%20questions%20respectively.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22Age%22%5D.isna().sum()%2C%20X_test%5B%22Age%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20train_mean%20%3D%20X_train%5B%22Age%22%5D.mean()%0A%20%20%20%20X_train%5B%22Age%22%5D%20%3D%20X_train%5B%22Age%22%5D.fillna(train_mean)%0A%0A%20%20%20%20test_mean%20%3D%20X_test%5B%22Age%22%5D.mean()%0A%20%20%20%20X_test%5B%22Age%22%5D%20%3D%20X_test%5B%22Age%22%5D.fillna(test_mean)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22Age%22%5D.isna().sum()%2C%20X_test%5B%22Age%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22Location%22%5D.isna().sum()%2C%20X_test%5B%22Location%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22Location%22%5D%20%3D%20X_train%5B%22Location%22%5D.fillna(%22Other%22)%0A%20%20%20%20X_test%5B%22Location%22%5D%20%3D%20X_test%5B%22Location%22%5D.fillna(%22Other%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22Location%22%5D.isna().sum()%2C%20X_test%5B%22Location%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22GameDifficulty%22%5D.isna().sum()%2C%20X_test%5B%22GameDifficulty%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22GameDifficulty%22%5D%20%3D%20X_train%5B%22GameDifficulty%22%5D.fillna(%0A%20%20%20%20%20%20%20%20X_train%5B%22GameDifficulty%22%5D.mode()%5B0%5D%0A%20%20%20%20)%0A%20%20%20%20X_test%5B%22GameDifficulty%22%5D%20%3D%20X_test%5B%22GameDifficulty%22%5D.fillna(%0A%20%20%20%20%20%20%20%20X_test%5B%22GameDifficulty%22%5D.mode()%5B0%5D%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22GameDifficulty%22%5D.isna().sum()%2C%20X_test%5B%22GameDifficulty%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22InGamePurchases%22%5D.isna().sum()%2C%20X_test%5B%22InGamePurchases%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22InGamePurchases%22%5D%20%3D%20X_train%5B%22InGamePurchases%22%5D.fillna(0)%0A%20%20%20%20X_test%5B%22InGamePurchases%22%5D%20%3D%20X_test%5B%22InGamePurchases%22%5D.fillna(0)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train%5B%22InGamePurchases%22%5D.isna().sum()%2C%20X_test%5B%22InGamePurchases%22%5D.isna().sum()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%206%0A%0A%20%20%20%20Write%20the%20sum%20of%20transformed(imputed)%20%22Age%22%20column%20of%20the%20test%20dataset.%20(upto%202%20digits%20after%20decimal%20points)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test)%3A%0A%20%20%20%20round(X_test%5B%22Age%22%5D.sum()%2C%202)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20Question%207%0A%0A%20%20%20%20Apply%20preprocessing%20on%20features%20of%20train%20and%20test%20datasets.%0A%0A%20%20%20%20-%20Drop%20the%20**%22PlayerID%22**%20Column%20before%20the%20preprocessing%20steps.%0A%20%20%20%20-%20Before%20applying%20any%20preprocessing%20there%20should%20not%20be%20any%20missing%20or%20unknown%20values%20present%20in%20the%20train%20and%20test%20dataset.%0A%20%20%20%20-%20Learn%20transformers'%20parameters%20using%20training%20set%20only%20and%20then%20transform%20train%20%26%20test%20sets%20using%20them.%0A%0A%20%20%20%20%20%20%20%20-%20**For%20Categorical%20Features**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20**Ordinal%20Features**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Ordinally%20Encode%20**%22GameDifficulty%22**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20**GameDifficulty**%20%7C%20**Order**%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20------------------%20%7C%20---------%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20Easy%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%200%20%20%20%20%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20Medium%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%201%20%20%20%20%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%20Hard%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7C%202%20%20%20%20%20%20%20%20%20%7C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20**Nominal%20Features**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20One-Hot%20Encode%20**'Gender'**%2C%20**'Location'**%2C%20**'GameGenre'**%20features%20and%20keep%20%60drop_first%20%3D%20True%60.%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20-%20**Scaling%20Features**%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%20Scale%20all%20the%20features%20(transformed%20categorical%20and%20numerical)%20of%20the%20feature%20matrix%20using%20the%20StandardScaler%0A%0A%20%20%20%20Calculate%20the%20sum%20of%20all%20the%20values%20present%20in%20first%20five%20rows%20of%20transformed%20test%20feature%20matrix%20%3F%20(upto%202%20digits%20afer%20the%20decimal)%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20X_train.drop(%22PlayerID%22%2C%20axis%3D1%2C%20inplace%3DTrue)%0A%20%20%20%20X_test.drop(%22PlayerID%22%2C%20axis%3D1%2C%20inplace%3DTrue)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train)%3A%0A%20%20%20%20assert%20X_train.isna().sum().sum()%20%3D%3D%200%0A%20%20%20%20assert%20X_test.isna().sum().sum()%20%3D%3D%200%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Difference%20between%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20X_train%5B%5B%22GameDifficulty%22%5D%5D%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20and%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20X_train%5B%22GameDifficulty%22%5D%0A%20%20%20%20%60%60%60%0A%0A%20%20%20%20in%20**pandas**%3A%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%23%201.%20%60X_train%5B%22GameDifficulty%22%5D%60%0A%0A%20%20%20%20*%20Returns%20a%20**Series**.%0A%20%20%20%20*%20Shape%3A%20%60(n%2C)%60%20where%20%60n%60%20is%20the%20number%20of%20rows.%0A%20%20%20%20*%20One-dimensional%2C%20index-aligned.%0A%20%20%20%20*%20Example%3A%0A%0A%20%20%20%20%20%20%60%60%60python%0A%20%20%20%20%20%20type(X_train%5B%22GameDifficulty%22%5D)%0A%20%20%20%20%20%20%23%20pandas.Series%0A%20%20%20%20%20%20X_train%5B%22GameDifficulty%22%5D.shape%0A%20%20%20%20%20%20%23%20(1000%2C)%20%20%20%23%20if%201000%20rows%0A%20%20%20%20%20%20%60%60%60%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%23%202.%20%60X_train%5B%5B%22GameDifficulty%22%5D%5D%60%0A%0A%20%20%20%20*%20Returns%20a%20**DataFrame**.%0A%20%20%20%20*%20Shape%3A%20%60(n%2C%201)%60.%0A%20%20%20%20*%20Two-dimensional%2C%20column%20remains%20in%20DataFrame%20format.%0A%20%20%20%20*%20Example%3A%0A%0A%20%20%20%20%20%20%60%60%60python%0A%20%20%20%20%20%20type(X_train%5B%5B%22GameDifficulty%22%5D%5D)%0A%20%20%20%20%20%20%23%20pandas.DataFrame%0A%20%20%20%20%20%20X_train%5B%5B%22GameDifficulty%22%5D%5D.shape%0A%20%20%20%20%20%20%23%20(1000%2C%201)%0A%20%20%20%20%20%20%60%60%60%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%23%23%23%20%F0%9F%94%91%20Why%20does%20this%20matter%3F%0A%0A%20%20%20%20*%20**Series%20(%60%5B%5D%60%20single%20bracket)**%20%E2%86%92%20when%20you%20just%20need%20the%20raw%20column%20vector.%0A%20%20%20%20*%20**DataFrame%20(%60%5B%5B%5D%5D%60%20double%20bracket)**%20%E2%86%92%20when%20you%20want%20to%20keep%20it%20as%20a%20DataFrame%2C%20e.g.%2C%20for%20scikit-learn%20models%20which%20expect%202D%20arrays%20as%20input%20(%60.fit(X%2C%20y)%60).%0A%0A%20%20%20%20---%0A%0A%20%20%20%20%E2%9C%85%20Example%20usage%3A%0A%0A%20%20%20%20%60%60%60python%0A%20%20%20%20%23%20This%20may%20break%20if%20X%20needs%20to%20be%202D%0A%20%20%20%20model.fit(X_train%5B%22GameDifficulty%22%5D%2C%20y_train)%0A%0A%20%20%20%20%23%20This%20works%20(keeps%20it%202D)%0A%20%20%20%20model.fit(X_train%5B%5B%22GameDifficulty%22%5D%5D%2C%20y_train)%0A%20%20%20%20%60%60%60%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(OrdinalEncoder)%3A%0A%20%20%20%20ordinal_encoder%20%3D%20OrdinalEncoder(categories%3D%5B%5B%22Easy%22%2C%20%22Medium%22%2C%20%22Hard%22%5D%5D)%0A%20%20%20%20ordinal_encoder%0A%20%20%20%20return%20(ordinal_encoder%2C)%0A%0A%0A%40app.cell%0Adef%20_(X_test%2C%20X_train%2C%20ordinal_encoder)%3A%0A%20%20%20%20X_train%5B%22GameDifficulty%22%5D%20%3D%20ordinal_encoder.fit_transform(%0A%20%20%20%20%20%20%20%20X_train%5B%5B%22GameDifficulty%22%5D%5D%0A%20%20%20%20)%0A%0A%20%20%20%20X_test%5B%22GameDifficulty%22%5D%20%3D%20ordinal_encoder.fit_transform(%0A%20%20%20%20%20%20%20%20X_test%5B%5B%22GameDifficulty%22%5D%5D%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(OneHotEncoder%2C%20X_test%2C%20X_train%2C%20pd)%3A%0A%20%20%20%20%23%20One-Hot%20Encode%20the%20nominal%20categorical%20features%20with%20drop_first%3DTrue%0A%20%20%20%20_ohe_encoder%20%3D%20OneHotEncoder(%0A%20%20%20%20%20%20%20%20drop%3D%22first%22%2C%20%20%23%20drop%20the%20first%20category%20to%20avoid%20multicollinearity%0A%20%20%20%20%20%20%20%20sparse_output%3DFalse%2C%20%20%23%20return%20a%20dense%20array%0A%20%20%20%20%20%20%20%20handle_unknown%3D%22ignore%22%2C%20%20%23%20safely%20handle%20unseen%20categories%20in%20test%20set%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Fit%20the%20encoder%20on%20the%20training%20data%0A%20%20%20%20_ohe_encoder.fit(X_train%5B%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%5D)%0A%0A%20%20%20%20%23%20Transform%20both%20train%20and%20test%20sets%0A%20%20%20%20_X_train_ohe%20%3D%20_ohe_encoder.transform(%0A%20%20%20%20%20%20%20%20X_train%5B%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%5D%0A%20%20%20%20)%0A%20%20%20%20_X_test_ohe%20%3D%20_ohe_encoder.transform(%0A%20%20%20%20%20%20%20%20X_test%5B%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%5D%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Convert%20the%20output%20to%20DataFrames%20with%20appropriate%20column%20names%0A%20%20%20%20_ohe_columns%20%3D%20_ohe_encoder.get_feature_names_out(%0A%20%20%20%20%20%20%20%20%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%0A%20%20%20%20)%0A%20%20%20%20_X_train_ohe_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20_X_train_ohe%2C%20columns%3D_ohe_columns%2C%20index%3DX_train.index%0A%20%20%20%20)%0A%20%20%20%20_X_test_ohe_df%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20_X_test_ohe%2C%20columns%3D_ohe_columns%2C%20index%3DX_test.index%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Drop%20the%20original%20nominal%20columns%20from%20the%20feature%20matrices%0A%20%20%20%20X_train.drop(columns%3D%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%2C%20inplace%3DTrue)%0A%20%20%20%20X_test.drop(columns%3D%5B%22Gender%22%2C%20%22Location%22%2C%20%22GameGenre%22%5D%2C%20inplace%3DTrue)%0A%0A%20%20%20%20%23%20Concatenate%20the%20encoded%20columns%20back%20to%20the%20feature%20matrices%0A%20%20%20%20X_train%5B%3A%5D%20%3D%20pd.concat(%5BX_train%2C%20_X_train_ohe_df%5D%2C%20axis%3D1)%0A%20%20%20%20X_test%5B%3A%5D%20%3D%20pd.concat(%5BX_test%2C%20_X_test_ohe_df%5D%2C%20axis%3D1)%0A%0A%20%20%20%20%23%20Optional%3A%20verify%20that%20there%20are%20no%20remaining%20categorical%20columns%0A%20%20%20%20X_train.dtypes%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(StandardScaler%2C%20X_test%2C%20X_train%2C%20pd)%3A%0A%20%20%20%20%23%20Initialize%20StandardScaler%0A%20%20%20%20_scaler%20%3D%20StandardScaler()%0A%0A%20%20%20%20%23%20Fit%20scaler%20on%20training%20data%0A%20%20%20%20_scaler.fit(X_train)%0A%0A%20%20%20%20%23%20Transform%20both%20training%20and%20test%20data%0A%20%20%20%20X_train_scaled_array%20%3D%20_scaler.transform(X_train)%0A%20%20%20%20X_test_scaled_array%20%3D%20_scaler.transform(X_test)%0A%0A%20%20%20%20%23%20Convert%20scaled%20arrays%20back%20to%20DataFrames%20with%20original%20column%20names%20and%20indices%0A%20%20%20%20X_train_scaled%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20X_train_scaled_array%2C%20columns%3DX_train.columns%2C%20index%3DX_train.index%0A%20%20%20%20)%0A%0A%20%20%20%20X_test_scaled%20%3D%20pd.DataFrame(%0A%20%20%20%20%20%20%20%20X_test_scaled_array%2C%20columns%3DX_test.columns%2C%20index%3DX_test.index%0A%20%20%20%20)%0A%0A%20%20%20%20%23%20Optional%3A%20verify%20scaling%20(mean%20~0%2C%20std%20~1)%20for%20training%20set%0A%20%20%20%20X_train_scaled.describe().loc%5B%5B%22mean%22%2C%20%22std%22%5D%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(X_test)%3A%0A%20%20%20%20round(X_test.iloc%5B%3A5%5D.to_numpy().sum()%2C%202)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
05fba6422af06841586a9d892e25d7eb9a54be2a5ffce2e93457d7d660fa97cd